// /*
// * Copyright 2009-2021 Alibaba Cloud All rights reserved.
// *
// * Licensed under the Apache License, Version 2.0 (the "License");
// * you may not use this file except in compliance with the License.
// * You may obtain a copy of the License at
// *
// *      http://www.apache.org/licenses/LICENSE-2.0
// *
// * Unless required by applicable law or agreed to in writing, software
// * distributed under the License is distributed on an "AS IS" BASIS,
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// * See the License for the specific language governing permissions and
// * limitations under the License.
// *

#import <Foundation/Foundation.h>

@class PDSFileSubSection;
@class FMDatabaseQueue;

typedef void (^PDSTaskStorageGetInfoCompletion)(NSString *taskIdentifier,NSDictionary *taskInfo,NSArray<PDSFileSubSection *> *fileSections);

@protocol PDSTaskStorageInfo <NSObject>
- (NSString *)taskIdentifier;

- (NSDictionary *)storageInfo;
@end

@protocol PDSTaskStorage <NSObject>
- (void)setupWithDBQueue:(FMDatabaseQueue *)dbQueue;

- (void)setFileSections:(NSArray <PDSFileSubSection *> *)fileSections withTaskStorageInfo:(id <PDSTaskStorageInfo>)taskStorage;

- (void)setFileSubSections:(NSArray <PDSFileSubSection *> *)fileSubSections forTaskIdentifier:(NSString *)taskIdentifier;

- (void)getTaskInfoWithIdentifier:(NSString *)taskIdentifier completion:(PDSTaskStorageGetInfoCompletion)completion;

- (void)deleteTaskInfoWithIdentifier:(NSString *)taskIdentifier force:(BOOL)force;

@end